# @File     : douban_movie_top_250.py
# @function : 爬取豆瓣电影排行榜Top 250部电影的片名、海报图片地址并下载海报图片
# @Software : PyCharm Community Edition，谷歌Chrome浏览器
# @Knowledge: requests、正则表达式、图片下载
"""
import requests
import re

# 豆瓣音乐排行榜网址
url = 'http://localhost:8080/douban/douban1.html'


# 补全代码：使用requests库发送请求并获取返回结果


# 通过正则表达式获取片名title
def get_movie_title():
    # 补全代码
    pass


# 通过正则表达式获取音乐海报图片网址
def get_movie_images():
    # 补全代码
    pass


# 打印片名和海报图片网址，并通过requests库下载图片
def print_titles_download_images(titles, images):
# 下载的海报图片保存在imgs文件夹中，需要提前创建好imgs文件夹
# 补全代码:打印的片名前需要有序号
    pass


if __name__ == "__main__":
#补全代码
    pass
"""
import requests
import re
import os
import stat
# 豆瓣音乐排行榜网址
url = 'http://localhost:8080/douban/douban1.html'
base_url = 'http://localhost:8080/douban/'

# 使用requests库发送请求并获取返回结果
response = requests.get(url)

if response.status_code == 200:
    html=response.content.decode()
    print(html)
else:
    print(f"error:{response.status_code}")
# print(html_content)

# 通过正则表达式获取片名title
def get_music_title():
    pattern=re.compile(r'<span style="font-size:12px;">(.*?)</span>',re.S)
    titles=re.findall(pattern,html)
    print(titles)
    return  titles

# 通过正则表达式获取电影海报图片网址
def get_music_images():
    pattern = re.compile(r'<img src="(.*?)"', re.S)
    img_urls = re.findall(pattern, html)
    print(img_urls)
    return img_urls

# 打印片名和海报图片网址，并通过requests库下载图片
def print_titles_download_images(titles, images):
    # 下载的海报图片保存在imgs文件夹中，需要提前创建好imgs文件夹
    if not os.path.exists('imgs'):
        os.mkdir('imgs')
   # os.chmod('imgs',stat.S_IRUSR)


    for idx,(title,img_url) in enumerate(zip(titles,images),start=1):
        img_url=img_url.lstrip("./")
        title=clean_filename(title)
        print(f'{idx}.{title} \n {base_url+img_url}')

        try:
            content=requests.get(base_url+img_url).content
        except Exception as e:
            print("download error")
        with open(f'imgs/{idx}_{title}.jpg','wb') as f:
            f.write(content)

# 为了避免因为文件名里面有特殊符号导致的错误，添加个名字过滤
def clean_filename(filename):
    # 移除文件名中的特殊字符
    #return "".join(c for c in filename if c.isalnum() or c in (' ', '_', '-'))

# 主程序
if __name__ == "__main__":
    titles = get_music_title()
    images = get_music_images()
    print_titles_download_images(titles, images)


